//引入express模块
const express = require('express');
const pool = require('./pool');

//创建路由器 r
const r = express.Router();


//添加路由

//1.用户注册接口(post /reg)
    /*接口地址：127.0.0.1：3000/v1/users/reg
    请求方式：post
    */
r.post('/reg',(req,res,next)=>{
    //获取post传递的参数
    console.log(req.body);
    //验证手机号码格式，不正确就阻止往后执行
    //{code:405,msg:'手机格式错误'}
    if(!/^1[3-9]\d{9}$/.test(req.body.phone)){
        res.send({code:405,msg:'手机格式错误'});
        //组织往后执行
        return;
    }
    //验证邮箱格式，不正确就阻止往后执行
    //{code:405,msg:'邮箱格式错误'}
    if(!/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/.test(req.body.email)){
        res.send({code:405,msg:'邮箱格式错误'});
        //阻止往后执行
        return;
    }

    //验证密码格式是否正确，不正确就阻止往后执行
    //{code:405,msg:'密码格式不正确'}
    if(!/^[a-zA-Z0-9]{8,16}$/){
        res.send({code:405,msg:'密码格式错误'});
        //阻止往后执行
        return;
    }

    //执行SQL命令，将数据插入到数据库
    pool.query('insert into zuipin_registry set?',[req.body],(err,r)=>{
        if(err){
            //交给下一个错误处理中间件【在web服务器最后面】
            next(err);
            //阻止往后执行
            return;
        }
        console.log(r);
        //成功以后。代表插入成功，再去响应【回调函数，异步影响】
        res.send({code:200,msg:'注册成功'});
    });
}); 


//2.删除用户  的路由【接口】(delete /:编号)
    //接口地址：http://127.0.0.1:3000/v1/users/x
    //请求地址：delete
    // 删除编号对应的数据，
    // 成功{code:200,msg:’删除成功’}
    // 失败{code:500,msg:’删除失败’}

r.delete('/:uid',(req,res,next)=>{
    //获取路由传递的参数
    console.log(req.params);
    //执行SQL命令，删除编号对应的用户
    pool.query('delete from zuipin_registry where uid=?',[req.params.uid],(err,r)=>{
        if(err){
            //如果SQL命令出现错误，则交给下一个 错误处理中间件  处理
            next(err);
            //阻止往后执行
            return;
        }
        console.log(r);
        if(r.affectedRows===0){
            res.send({code:200,msg:'删除失败!'});
        }else{
            res.send({code:500,msg:'删除成功!'})
        }
    }); 
    
});

//用户登录接口(post /login)
//接口地址：http://127.0.0.1:3000/v1/users/login
//请求方式：post
r.post('/login',(req,res,next)=>{
    //3.1获取传递的参数
    console.log(req.body);
    //3.2判断是否为空
    if(!req.body.uname){
        res.send({code:401,msg:"uname不能为空"});
        return;//阻止往后执行
    }
    //3.3执行SQL命令，查询用户表中是否有用户和密码同时匹配的数据
    pool.query('select * from zuipin_registry where uname=? and upwd=?',[req.body.uname,req.body.upwd],(err,r)=>{
        if(err){
            //交给下一个错误处理中间件
            next(err);
            //阻止往后执行
            return;
        }
        console.log(r);
        //SQL命令成功后再响应
        res.send({code:200,msg:'登录成功'});
    });
    
});


//暴露出去
module.exports=r;
